package com.sangeng.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sangeng.domain.ResponseResult;
import com.sangeng.domain.dto.UpdateArticleDto;
import com.sangeng.domain.entity.Article;
import com.sangeng.domain.dto.AddArticleDto;
import com.sangeng.domain.vo.PageVo;
import com.sangeng.domain.vo.UpdateArticleVo;

public interface ArticleService extends IService<Article> {
    /**
     * //查询热门前十的文章列表
     * @return
     */
    ResponseResult hotArticleList();
    /**
     * 分页查询文章列表
     * @param pageNum
     * @param pageSize
     * @param categoryId
     * @return
     */

    ResponseResult articleList(Integer pageNum, Integer pageSize, Long categoryId);
    /**
     * 获取文章详情
     * @param id
     * @return
     */

    ResponseResult getArticleDetail(Long id);
    /**
     * 在查询详情文章时，更新文章的浏览量（redis中对应的数值自增）
     * @param id
     * @return
     */

    ResponseResult updateViewCount(Long id);
    /**
     * 添加博文
     * @param addArticledto
     * @return
     */

    ResponseResult addArticle(AddArticleDto addArticledto);
    /**
     *在后台需要分页查询文章功能，要求能根据标题和摘要模糊查询。
     * @param pageNum
     * @param pageSize
     * @param title
     * @param summary
     * @return
     */

    ResponseResult<PageVo> selectAllByPage(int pageNum, int pageSize, String title, String summary);
    /**
     * 根据文章id查询数据，相应的文章所属标签也要查询
     * @param id
     * @return
     */

    ResponseResult<UpdateArticleVo> selectById(Long id);
    /**
     * 修改文章数据，同时要要进行文章标签表的更新
     * @param updateArticleDto
     * @return
     */

    ResponseResult updateData(UpdateArticleDto updateArticleDto);
    /**
     * 根绝文章id删除文章，同时也要删除文章标签表中的数据
     * @param id
     * @return
     */

    ResponseResult deleteById(Long id);
}
